嗨大家好,今天是鐵人賽的第 27 天,也是本系列 Three.js 最後一篇囉,照慣例,最後一天我們要來利用前面所學技術製作小功能。那麼廢話不多說,就讓我們開始吧!
這邊有個小提醒,若你是使用 codepen 即時渲染畫面等線上編輯器,記得把 three.js 引入,然後在 Behavior 內關閉即時渲染程式畫面的功能,以免爆掉喔~
function init() {}
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );
var renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight);
document.body.appendChild( renderer.domElement );
var shape = [];
geometry = new THREE.IcosahedronGeometry(2.5,0);
material = new THREE.MeshNormalMaterial();
shape[0] = new THREE.Mesh( geometry, material );
shape[1] = new THREE.Mesh( geometry, material );
shape[2] = new THREE.Mesh( geometry, material );
shape[0].position.set(0,5,0);
shape[1].position.set(0,5,0);
shape[2].position.set(0,5,0);
scene.add(shape[0],shape[1],shape[2]);
var light = new THREE.PointLight(0xfca4c5);
light.position.set(250,0,0);
scene.add(light);
camera.position.set(3,4,10);
renderer.render(scene, camera);
requestAnimationFrame
運作動畫,接著針對我們上面繪製的三個多面體物件去透過 旋轉矩陣 來調整旋轉角度。
function render() {
requestAnimationFrame( render );
shape[0].rotation.x += 0.035;
shape[0].rotation.y -= 0.005;
shape[1].rotation.y += 0.015;
shape[1].rotation.z -= 0.005;
shape[2].rotation.z -= 0.025;
shape[2].rotation.x += 0.005;
renderer.render(scene, camera);
}
render();
init();
再次賜予我力量吧 雅典娜!天馬迴旋碎擊拳!
呼~ Three.js 系列就到這邊結束啦~
其實如果能把 Three.js 提供的一些內建語法熟悉熟悉,就會發現跟原生 Canvas 等寫法相比真的輕鬆非~常多!
因此如果有興趣的話都可以上官網看看呦!
當然一樣的如果有其他做出來超厲害動畫,也都歡迎跟我分享交流討論喔!
那麼我們明天見!ㄅㄅ!